library(here)
library(dplyr)
library(ggplot2)
library(plotly)
library(DT)
load(here("puerto_aviles.RData")) Balanza entre Embarques y Desembarques por paises
En este post vamos a tratar de hacer una tabla para ver el balance comercial con todos los paises que operó el puerto de Avilés en el año 2024.
Cargamos los datos los paquetes necesarios, así como los que venimos trabajando del Puerto de Avilés.
Queremos visualizar en un gráfico y una tabla la balanza comercial entre embarques y desembarques por paises. Podemos empeza primero por la tabla.
# Crear columna según tipo de operación
puerto_aviles <- puerto_aviles %>%
filter(`Fecha Entrada` >= "2024-01-01" & `Fecha Entrada` <= "2024-12-31") %>%
mutate(
Pais_final = ifelse(Operación == "Embarque", as.character(Pais_dest), as.character(Pais_orig))
)# Resumen de toneladas por país y operación
resumen_tabla <- puerto_aviles %>%
group_by(Pais_final, Operación) %>%
summarise(Tonelaje_total = sum(Tonelaje, na.rm = TRUE), .groups = "drop") %>%
arrange(desc(Tonelaje_total))
resumen_tabla# A tibble: 73 × 3
Pais_final Operación Tonelaje_total
<chr> <fct> <dbl>
1 BELGICA Desembarque 1375075.
2 ESPAÑA Desembarque 553107.
3 PAISES BAJOS Desembarque 480509.
4 ITALIA Embarque 398873
5 PANAMA Desembarque 316812.
6 ESPAÑA Embarque 304544.
7 PAISES BAJOS Embarque 183971.
8 BELGICA Embarque 146401.
9 FRANCIA Embarque 139576.
10 ESPAÑA Trasbordo 134743.
# ℹ 63 more rows
Ahora podemos ver la tabla de resumen con DT::datatable para que sea interactiva.
DT::datatable(
resumen_tabla,
caption = "Tonelaje por país y operación (Puerto de Avilés)",
options = list(pageLength = 10)
)Por último generamos el gráfico de barras interactivo con ggplotly. En este caso, como el gráfico es un poco más complejo, lo generamos primero con ggplot y luego lo convertimos a interactivo.
# Resumen por país final
resumen_paises <- puerto_aviles %>%
group_by(Pais_final, Operación) %>%
summarise(Tonelaje_total = sum(Tonelaje, na.rm = TRUE), .groups = "drop") %>%
group_by(Pais_final) %>%
mutate(Total_por_pais = sum(Tonelaje_total)) %>%
ungroup()
# Gráfico con ggplot
g <- ggplot(resumen_paises, aes(x = reorder(Pais_final, -Total_por_pais), y = Tonelaje_total, fill = Operación)) +
geom_bar(stat = "identity") +
labs(
title = "Tráfico total por país (Puerto de Avilés)",
x = "País (origen para desembarque, destino para embarque)",
y = "Toneladas",
fill = "Operación"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Convertir a interactivo
ggplotly(g)